#include "mywidget.h"
#include "ui_mywidget.h"
#include <QPainter>
#include <QPixmap>
#include <QImage>
#include <QPen>
#include <QPicture>


MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::MyWidget)
{
    ui->setupUi(this);

    // QPixmap 绘图设备
//    QPixmap pix(300, 300);
//    QPainter painter(&pix);
//    pix.fill(Qt::white);
//    painter.setPen(QPen(Qt::green));
//    painter.drawEllipse(QPoint(150, 150), 100, 100);

//    pix.save("E:\\pix.png");


    // QImage 绘图设备
//    QImage img(300, 300, QImage::Format_ARGB32);
//    img.fill(Qt::yellow);
//    QPainter painter(&img);

//    painter.setPen(QPen(Qt::blue));
//    painter.drawEllipse(QPoint(150, 150), 100, 100);

//    img.save("E:\\img.png");

    // QPicture 绘图事件, 可以记录和重现绘图指令
    QPicture pic;
    QPainter painter;
    painter.begin(&pic);

    painter.setPen(QPen(Qt::yellow));
    painter.drawEllipse(QPoint(150, 150), 100, 100);
    painter.end();

    // 保存到磁盘
    pic.save("E:\\pic2.cs");




}

MyWidget::~MyWidget()
{
    delete ui;
}

void MyWidget::paintEvent(QPaintEvent *event)
{
//    QPainter painter(this);

//    // 利用 QImage对像素进行修改
//    QImage img;
//    img.load(":/Image/lfei.jpg");

//    // 修改图片像素点
//    for (int i = 10; i < 100; i++) {
//        for (int j = 50; j < 100; ++j) {
//            QRgb value = qRgb(255, 0, 0);
//            img.setPixel(i, j, value);
//        }
//    }

//    painter.drawImage(0, 0, img);

    // 重现绘图指令
    QPicture pic;
    pic.load("E:\\pic.cs");

    QPainter painter(this);

    painter.drawPicture(0, 0, pic);


}

